package converter

import (
	"fmt"
	"strings"
	"unicode/utf8"
)

// StringTest 字符串相关工具方练习
func StringTest() {
	//普通字符串，支持转义字符
	s1 := "\t\txxx\n"
	//格式化字符串，原样数据字符串中的内容，包括换行
	s2 := `\t\txxx\n`
	fmt.Println(s1, s2)
	//包括换行的格式字符串
	s3 := `thinkpad
	thinkbook
	`
	fmt.Println(s3)
	s4 := "lenovo"
	s5 := "联想"
	s6 := "LENOVO"
	//字节长度
	fmt.Println(len(s4), len(s5))
	//字符长度
	fmt.Println(utf8.RuneCountInString(s4), utf8.RuneCountInString(s5))
	//截取
	fmt.Println(s4[:2])
	//转大写
	fmt.Println(strings.ToUpper(s4))
	//转小写
	fmt.Println(strings.ToLower(s6))
	//首字母大写
	fmt.Println(strings.Title(s4))
	//包含指定内容
	fmt.Println(strings.Contains(s4, "no"))
	//ContainsAny：包含chars中任何一个字符，就返回true
	fmt.Println(strings.ContainsAny(s4, "eo"))
	//忽略大小写比较内容
	fmt.Println(strings.EqualFold(s4, s6))
	//查看指定字符串出现次数
	s7 := "Lenovo is also becoming a force in the consumer PC segment"
	fmt.Println(strings.Count(s7, "m")) //3
	//拆分字符串为切片
	fmt.Println(strings.Split(s7, " "))
	//拆分字符串，并包含拆分字符
	fmt.Println(strings.SplitAfter(s7, " "))
	//拼接字符
	sliceInfo := []string{"aa", "bb", "cc", "dd"}
	fmt.Println(strings.Join(sliceInfo, ","))
	//指定字符开头
	fmt.Println(strings.HasPrefix(s7, "Lenovo"))
	//自定字符结尾
	fmt.Println(strings.HasSuffix(s7, "segment"))
	//生成重复字符
	fmt.Println(strings.Repeat("棉", 5))
	//替换字符串[全部]
	fmt.Println(strings.ReplaceAll(s7, "n", "中国"))
	//替换字符串[前两个]
	fmt.Println(strings.Replace(s7, "n", "中国", 2))
	//trim
	s8 := "   aa    "
	//去除前后指定内容
	fmt.Println(strings.Trim(s8, " "))
	//去除前后空格
	fmt.Println(strings.TrimSpace(s8))
}
